home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue61 / Construc / TDM61W.DPR < prev   
Encoding:
Text File  |  2000-08-06  |  2.5 KB  |  105 lines

  1. program TDM61;
  2. {$APPTYPE CONSOLE}
  3. uses
  4.   SysUtils, MMSystem;
  5.  
  6.   function CaptionMaker1(Str: WideString): WideString;
  7.   { stack: 256 (arg) + 256 (local) + 256 (result) bytes }
  8.   var
  9.     i: Integer;
  10.     Tmp: WideString;
  11.   begin
  12.     Tmp := Str; // initial copy
  13.     for i:=1 to Length(Str) do
  14.       if (i = 1) or (Ord(Str[i-1]) = 32) then
  15.         Tmp[i] := WideChar(UpCase(Chr(Ord(Str[i]))))
  16.       else
  17.         Tmp[i] := Str[i];
  18.     Result := Tmp;
  19.   end;
  20.  
  21.   function CaptionMaker2(Str: WideString): WideString;
  22.   { stack: 256 (arg) + 256 (result) bytes }
  23.   var
  24.     i: Integer;
  25.   begin
  26.     for i:=1 to Length(Str) do
  27.       if (i = 1) or (Ord(Str[i-1]) = 32) then
  28.         Str[i] := WideChar(UpCase(Chr(Ord(Str[i]))));
  29.     Result := Str
  30.   end;
  31.  
  32.   function CaptionMaker3(const Str: WideString): WideString;
  33.   { stack: 256 (result) bytes }
  34.   var
  35.     i: Integer;
  36.   begin
  37.     Result := Str; // initial copy
  38.     for i:=1 to Length(Str) do
  39.       if (i = 1) or (Ord(Str[i-1]) = 32) then
  40.         Result[i] := WideChar(UpCase(Chr(Ord(Str[i]))))
  41.   end;
  42.  
  43.   procedure CaptionMaker4(var Str: WideString);
  44.   var
  45.     i: Integer;
  46.   begin
  47.     for i:=1 to Length(Str) do
  48.       if (i = 1) or (Ord(Str[i-1]) = 32) then
  49.         Str[i] := WideChar(UpCase(Chr(Ord(Str[i]))))
  50.   end;
  51.  
  52.   function CaptionMaker5(var Str: WideString): PWideString;
  53.   var
  54.     i: Integer;
  55.   begin
  56.     for i:=1 to Length(Str) do
  57.       if (i = 1) or (Ord(Str[i-1]) = 32) then
  58.         Str[i] := WideChar(UpCase(Chr(Ord(Str[i]))));
  59.     Result := @Str
  60.   end;
  61.  
  62. var
  63.   Str: WideString;
  64.   Str2: WideString;
  65.   EndTime: Cardinal;
  66.   Reps: Integer;
  67. begin
  68.   Str := 'this is a short WideString to test';
  69.   Reps := 0;
  70.   EndTime := TimeGetTime + 100;
  71.   repeat
  72.     Inc(Reps);
  73.     Str2 := CaptionMaker1(Str);
  74.   until TimeGetTime > EndTime;
  75.   writeln('1: ',Reps);
  76.   Reps := 0;
  77.   EndTime := TimeGetTime + 100;
  78.   repeat
  79.     Inc(Reps);
  80.     Str2 := CaptionMaker2(Str);
  81.   until TimeGetTime > EndTime;
  82.   writeln('2: ',Reps);
  83.   Reps := 0;
  84.   EndTime := TimeGetTime + 100;
  85.   repeat
  86.     Inc(Reps);
  87.     Str2 := CaptionMaker3(Str);
  88.   until TimeGetTime > EndTime;
  89.   writeln('3: ',Reps);
  90.   Reps := 0;
  91.   EndTime := TimeGetTime + 100;
  92.   repeat
  93.     Inc(Reps);
  94.     CaptionMaker4(Str);
  95.   until TimeGetTime > EndTime;
  96.   writeln('4: ',Reps);
  97.   Reps := 0;
  98.   EndTime := TimeGetTime + 100;
  99.   repeat
  100.     Inc(Reps);
  101.     Str2 := CaptionMaker5(Str)^;
  102.   until TimeGetTime > EndTime;
  103.   writeln('5: ',Reps);
  104.   readln
  105. end.